package cn.zhukelili.expand;

/**
 * @Description:
 * @Auther: hongheshou
 * @Date: 2018/7/23 10:20
 */
public class Client {
    public static void main(String[] args) {
        //定义发起人
        Originator originator = new Originator();
        //建立初始状态
        originator.setState("初始状态...");
        System.out.println("初始状态是：" + originator.getState());
        //建立备份
        originator.createMemento();
        //修改状态
        originator.setState("修改后的状态...");
        System.out.println("修改后状态是：" + originator.getState());
        //恢复原有状态
        originator.restoreMemento(originator);
        System.out.println("恢复后状态是：" + originator.getState());
    }
}

/*
运行结果是我们所希望的，程序精简了很多，而且高层模块的依赖也减少了，这正是我
们期望的效果。现在我们来考虑一下原型模式深拷贝和浅拷贝的问题，在复杂的场景下它会
让你的程序逻辑异常混乱，出现错误也很难跟踪。因此Clone方式的备忘录模式适用于较简
单的场景。
 */
